package com.ttx.pattern.example.singleton.after;

/**
 * 懒汉模式 + synchronized 同步锁 + 双重检查
 *
 * @author TimFruit
 * @date 19-10-20 下午5:21
 */
public class Singleton3 {

    //volatile确保多个线程能够可以看到实例化
    private volatile static Singleton3 instance=null;

    private Singleton3(){} //私有构造函数

    public static Singleton3 getInstance(){
        if(instance==null){//第一次检查
            synchronized (Singleton3.class){
                if(instance==null){//第二次检查
                    instance=new Singleton3();
                }
            }
        }
        return instance;
    }


}
